|
|
(не показано 26 промежуточных версий этого же участника) |
Строка 13: |
Строка 13: |
| # Squirrelmail 5.5.56 | | # Squirrelmail 5.5.56 |
|
| |
|
| </pre>Примечания:</pre>
| | Примечания: |
|
| |
|
| * в данной инструкции не разъясняется, как установить Centos 7.4 | | * в данной инструкции не разъясняется, как установить Centos 7.4 |
Строка 22: |
Строка 22: |
| == Установка EAI почтового сервера == | | == Установка EAI почтового сервера == |
|
| |
|
| == Задайте имя хоста ==
| | Задайте имя хоста |
|
| |
|
| # Обновите пакеты почтового сервера до последней версии
| | 1. Обновите пакеты почтового сервера до последней версии |
|
| |
|
| <pre># yum -y update</pre> | | <pre># yum -y update</pre> |
| # Задайте имя хоста (например, mail.test.ru) с помощью команды
| |
|
| |
|
| <pre># hostnamectl set-hostname [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre>'mail.test.ru</pre>']</pre>
| | 2. Задайте имя хоста (например, mail.test.ru) с помощью команды |
| | | <pre> |
| # Добавьте имя хоста в файл hosts
| | # hostnamectl set-hostname mail.test.ru |
| | | </pre> |
| <pre># vi /etc/hosts</pre>
| |
| | |
| ''Пример файла hosts''
| |
| | |
| 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre></pre>'mail.test.ru</pre></pre>']
| |
| | |
| ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre></pre>'mail.test.ru</pre></pre>']
| |
| | |
| ''*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)''
| |
| | |
| # Установите wget для скачивания дополнительного ПО
| |
| | |
| <pre># yum -y install wget</pre>
| |
| | |
| # Установите ''telnet'' для тестирования работы почтового сервера
| |
| | |
| <pre># yum -y install telnet</pre>
| |
| | |
| </pre>Инструкция по установке EAI почтового сервера под ОС CentOS 7</pre>
| |
| | |
| = Почтовый сервер с поддержкой EAI =
| |
| | |
| С помощью данной инструкции вы сможете установить почтовый сервер с поддержкой использования интернационализированных адресов электронной почты (EAI) на базе ПО с открытым исходным кодом. Почтовый сервер можно развивать далее с помощью другого ПО.
| |
| | |
| == Необходимое ПО ==
| |
| | |
| # Centos 7.4
| |
| # Postfix 3.2.3
| |
| # Dovecot 2.2.10
| |
| # MariaDB 10.3.11
| |
| # Squirrelmail 5.5.56
| |
| | |
| </pre>Примечания:</pre>
| |
| | |
| * в данной инструкции не разъясняется, как установить Centos 7.4
| |
| * версия Postfix 3.x.x и выше поддерживает EAI
| |
| * в реальных условиях необходимо также настроить сервер DNS
| |
| * putty и winscp используются для подключения к серверу
| |
| | |
| == Установка EAI почтового сервера ==
| |
| | |
| == Задайте имя хоста ==
| |
| | |
| # Обновите пакеты почтового сервера до последней версии
| |
| | |
| <pre># yum -y update</pre>
| |
| # Задайте имя хоста (например, mail.test.ru) с помощью команды
| |
| | |
| <pre># hostnamectl set-hostname [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre>'mail.test.ru</pre>']</pre> | |
| | |
| # Добавьте имя хоста в файл hosts
| |
|
| |
|
| | 3. Добавьте имя хоста в файл hosts |
| <pre># vi /etc/hosts</pre> | | <pre># vi /etc/hosts</pre> |
|
| |
|
| ''Пример файла hosts'' | | ''Пример файла hosts'' |
| | | <pre> |
| 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre></pre>'mail.test.ru</pre></pre>'] | | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.test.ru |
| | | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 mail.test.ru |
| ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 </pre></pre>'mail.test.ru</pre></pre>'] | | </pre> |
| | |
| ''*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)'' | | ''*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)'' |
|
| |
|
| # Установите wget для скачивания дополнительного ПО
| | 4. Установите wget для скачивания дополнительного ПО |
| | |
| <pre># yum -y install wget</pre> | | <pre># yum -y install wget</pre> |
|
| |
|
| # Установите ''telnet'' для тестирования работы почтового сервера
| | 5. Установите ''telnet'' для тестирования работы почтового сервера |
| | |
| <pre># yum -y install telnet</pre> | | <pre># yum -y install telnet</pre> |
|
| |
|
| == Настройте файрвол == | | == Настройте файрвол == |
|
| |
|
| # Проверьте, что у почтового сервиса имеется статус «firewalld service»
| | 1. Проверьте, что у почтового сервиса имеется статус «firewalld service» |
|
| |
|
| Статус должен быть активным (работающим) | | Статус должен быть активным (работающим) |
|
| |
|
| </pre># systemctl status firewalld</pre> | | <pre># systemctl status firewalld</pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Active: active (running) since Mon 2019-11-18 14:12:03 +07; 1h 13min ago</pre> | | <pre>Active: active (running) since Mon 2019-11-18 14:12:03 +07; 1h 13min ago</pre> |
|
| |
|
| # Проверьте открытые зону файрвола и сетевой интерфейс
| | 2. Проверьте открытые зону файрвола и сетевой интерфейс |
|
| |
|
| <pre># firewall-cmd --get-active-zones</pre> | | <pre># firewall-cmd --get-active-zones</pre> |
Строка 121: |
Строка 67: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>public</pre> | | <pre>public |
|
| |
|
| </pre>interfaces: ens32</pre>
| | interfaces: ens32</pre> |
|
| |
|
| # Проверьте сервисы файрвола в публичной зоне
| | 3. Проверьте сервисы файрвола в публичной зоне |
|
| |
|
| <pre># firewall-cmd --zone=public --list-services</pre> | | <pre># firewall-cmd --zone=public --list-services</pre> |
Строка 131: |
Строка 77: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>cockpit dhcpv6-client ssh </pre> | | <pre>cockpit dhcpv6-client ssh </pre> |
|
| |
|
| # Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера
| | 4. Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера |
|
| |
|
| <pre># firewall-cmd --permanent --zone=public --add-service=http</pre> | | <pre> |
| | # firewall-cmd --permanent --zone=public --add-service=http |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=https</pre>
| | # firewall-cmd --permanent --zone=public --add-service=https |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=mysql</pre>
| | # firewall-cmd --permanent --zone=public --add-service=mysql |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=smtp</pre>
| | # firewall-cmd --permanent --zone=public --add-service=smtp |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=smtps</pre>
| | # firewall-cmd --permanent --zone=public --add-service=smtps |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=imap</pre>
| | # firewall-cmd --permanent --zone=public --add-service=imap |
|
| |
|
| </pre># firewall-cmd --permanent --zone=public --add-service=imaps</pre>
| | # firewall-cmd --permanent --zone=public --add-service=imaps |
|
| |
|
| </pre># firewall-cmd --reload</pre>
| | # firewall-cmd --reload</pre> |
|
| |
|
| # Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы ''*Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера ([https://spalinux.com/2015/06/centos-7-basic-configure-firewall-by-firewall-cmd ''https://spalinux.com/2015/06/centos-7-basic-configure-firewallby-firewall-cmd'')]''
| | 5. Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы ''*Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера: |
|
| |
|
| <pre># firewall-cmd --zone=public --list-services</pre> | | <pre># firewall-cmd --zone=public --list-services</pre> |
Строка 157: |
Строка 104: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>cockpit dhcpv6-client http https imap imaps mysql smtp smtps ssh</pre> | | <pre>cockpit dhcpv6-client http https imap imaps mysql smtp smtps ssh</pre> |
|
| |
|
| # В этом примере мы открыли SELinux для удобства настройки
| | 6. В этом примере мы открыли SELinux для удобства настройки |
|
| |
|
| <pre># vi /etc/selinux/config</pre> | | <pre># vi /etc/selinux/config</pre> |
Строка 165: |
Строка 112: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>This file controls the state of SELinux on the system.</pre> | | <pre>This file controls the state of SELinux on the system. |
| | | # SELINUX= can take one of these three values: |
| </pre># SELINUX= can take one of these three values:</pre>
| |
|
| |
|
| </pre># enforcing - SELinux security policy is enforced.</pre>
| | # enforcing - SELinux security policy is enforced. |
|
| |
|
| </pre># permissive - SELinux prints warnings instead of enforcing.</pre>
| | # permissive - SELinux prints warnings instead of enforcing. |
|
| |
|
| </pre># disabled - No SELinux policy is loaded.</pre>
| | # disabled - No SELinux policy is loaded. |
|
| |
|
| </pre>SELINUX=disabled</pre>
| | SELINUX=disabled |
|
| |
|
| </pre># SELINUXTYPE= can take one of these two values:</pre>
| | # SELINUXTYPE= can take one of these two values: |
|
| |
|
| </pre># targeted - Targeted processes are protected,</pre>
| | # targeted - Targeted processes are protected, |
|
| |
|
| </pre># mls - Multi Level Security protection.</pre>
| | # mls - Multi Level Security protection. |
|
| |
|
| </pre>SELINUXTYPE=targeted</pre>
| | SELINUXTYPE=targeted</pre> |
|
| |
|
| # Перезапустите сервер
| | 7. Перезапустите сервер |
|
| |
|
| </pre># reboot</pre> | | <pre> |
| | | # reboot |
| </pre># sestatus</pre>
| | # sestatus</pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>disabled </pre> | | <pre>disabled </pre> |
|
| |
|
| == Создайте SSL-сертификат == | | == Создайте SSL-сертификат == |
Строка 199: |
Строка 145: |
| Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot | | Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot |
|
| |
|
| # Создайте индивидуальный ключ
| | 1. Создайте индивидуальный ключ |
| | |
| <pre># cd /etc/pki/tls/certs</pre>
| |
|
| |
|
| </pre># make</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key''] | | <pre> |
| | # cd /etc/pki/tls/certs |
| | # make eai.key |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>umask 77 ; \</pre> | | <pre> |
| | | umask 77 ; \ |
| </pre>/usr/bin/openssl genrsa -aes128 2048 > eai.key</pre>
| | /usr/bin/openssl genrsa -aes128 2048 > eai.key |
| | | Generating RSA private key, 2048 bit long modulus |
| </pre>Generating RSA private key, 2048 bit long modulus</pre>
| | ... |
| | | ... |
| </pre>...</pre>
| | e is 65537 (0x10001) |
| | | Enter pass phrase: #set passphrase |
| </pre>...</pre>
| | Verifying - Enter pass phrase: #confirm |
| | </pre> |
|
| |
|
| </pre>e is 65537 (0x10001)</pre>
| | 2. Удалите ''Passphase'' из созданного ключа |
|
| |
|
| </pre>Enter pass phrase:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#set_passphrase ''#set passphrase''] | | <pre> |
| | | # openssl rsa -in eai.key -out eai.key |
| </pre>Verifying - Enter pass phrase:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#confirm ''#confirm'']
| |
| | |
| # Удалите ''Passphase'' из созданного ключа
| |
| | |
| <pre># openssl rsa -in</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key''] </pre>-out</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key'']
| |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Enter pass phrase for eai.key:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#input_passphrase ''#input passphrase''] | | <pre> |
| | Enter pass phrase for eai.key: #input passphrase |
| | writing RSA key |
| | </pre> |
|
| |
|
| </pre>writing RSA key</pre>
| | 3. Создайте csr |
| | | <pre> # make eai.csr</pre> |
| # Создайте csr
| |
| # </pre># make eai.csr</pre>
| |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>umask 77 ; \</pre> | | <pre> |
| | | umask 77 ; \ |
| </pre>/usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr</pre>
| | /usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr |
| | | You are about to be asked to enter information that will be incorporated |
| </pre>You are about to be asked to enter information that will be incorporated</pre>
| | into your certificate request. |
| | | What you are about to enter is what is called a Distinguished Name or a DN. |
| </pre>into your certificate request.</pre>
| | There are quite a few fields but you can leave some blank |
| | | For some fields there will be a default value, |
| </pre>What you are about to enter is what is called a Distinguished Name or a DN.</pre>
| | If you enter '.', the field will be left blank. |
| | | ----- |
| </pre>There are quite a few fields but you can leave some blank</pre>
| | Country Name (2 letter code) [XX]:RU #country |
| | | State or Province Name (full name) []:Moscow #state |
| </pre>For some fields there will be a default value,</pre>
| | Locality Name (eg, city) [Default City]:Moscow #city |
| | | Organization Name (eg, company) [Default Company Ltd]:EAI #company |
| </pre>If you enter '.', the field will be left blank.</pre>
| | Organizational Unit Name (eg, section) []:IT #department |
| | | Common Name (eg, your name or your server's hostname) []:mail.test.ru #server's FQDN |
| </pre>-----</pre>
| | Email Address []:xxx@test.ru #email address |
| | | Please enter the following 'extra' attributes |
| </pre>Country Name (2 letter code) [XX]:</pre>RU [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#country ''#country'']
| | to be sent with your certificate request |
| | | A challenge password []: #Enter |
| </pre>State or Province Name (full name) []:</pre>[https://wiki.thnic.or.th/index.php?title=Bangkok&action=edit&redlink=1 ''Moscow''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#state ''#state'']
| | An optional company name []: #Enter |
| | | </pre> |
| </pre>Locality Name (eg, city) [Default City]:</pre>[https://wiki.thnic.or.th/index.php?title=Dusit&action=edit&redlink=1 ''Moscow''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#city ''#city'']
| |
| | |
| </pre>Organization Name (eg, company) [Default Company Ltd]:</pre>[https://wiki.thnic.or.th/index.php?title=EAI&action=edit&redlink=1 ''EAI''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#company ''#company'']
| |
| | |
| </pre>Organizational Unit Name (eg, section) []:</pre>[https://wiki.thnic.or.th/index.php?title=IT&action=edit&redlink=1 ''IT''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#department ''#department'']
| |
| | |
| </pre>Common Name (eg, your name or your server's hostname) []:</pre>[https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 ''mail.test.ru''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#server.27s_FQDN ''#server's FQDN'']
| |
| | |
| </pre>Email Address []:</pre>[mailto:xxx@test.ru ''xxx@test.ru''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#email_address ''#email address'']
| |
| | |
| </pre>Please enter the following 'extra' attributes</pre>
| |
| | |
| </pre>to be sent with your certificate request</pre>
| |
| | |
| </pre>A challenge password []:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#Enter ''#Enter'']
| |
| | |
| </pre>An optional company name []:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#Enter ''#Enter'']
| |
|
| |
|
| 4. Сгенерируйте ключ | | 4. Сгенерируйте ключ |
|
| |
|
| </pre># openssl x509 -in</pre> [https://wiki.thnic.or.th/index.php?title=Eai.csr&action=edit&redlink=1 ''eai.csr''] </pre>-out</pre> [https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt''] </pre>-req -signkey</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key''] </pre>-days 3650</pre> | | <pre> |
| | # openssl x509 -in eai.csr -out eai.crt -req -signkey eai.key -days 3650 |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Signature ok</pre> | | <pre> |
| | | Signature ok |
| </pre>subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru</pre>
| | subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru |
| | | Getting Private key |
| </pre>Getting Private key</pre>
| | </pre> |
|
| |
|
| == Установка mariadb, Postfix и Dovecot == | | == Установка mariadb, Postfix и Dovecot == |
|
| |
|
| # Установите mariadb , Postfix , Dovecot и необходимые пакеты
| | 1. Установите mariadb , Postfix , Dovecot и необходимые пакеты |
|
| |
|
| <pre># yum --enablerepo=centosplus install postfix</pre> | | <pre> |
| | # yum --enablerepo=centosplus install postfix |
| | # yum install dovecot mariadb-server dovecot-mysql |
| | </pre> |
|
| |
|
| </pre># yum install dovecot mariadb-server dovecot-mysql</pre>
| | 2. Обновите postfix с версии 2.x.x до версии 3.x.x |
| | |
| # Обновите postfix с версии 2.x.x до версии 3.x.x
| |
|
| |
|
| На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше. | | На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше. |
|
| |
|
| </pre># yum -y remove postfix</pre> | | <pre> |
| | | # yum -y remove postfix |
| </pre># yum -y remove ssmtp</pre>
| | # yum -y remove ssmtp |
| | | # yum -y remove sendmail |
| </pre># yum -y remove sendmail</pre>
| | </pre> |
|
| |
|
| Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше | | Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше |
|
| |
|
| </pre># vi /etc/yum.repos.d/gf.repo</pre> | | <pre># vi /etc/yum.repos.d/gf.repo</pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>[gf]</pre> | | <pre> |
| | | [gf] |
| </pre>name=Ghettoforge packages that won't overwrite core distro packages.</pre>
| | name=Ghettoforge packages that won't overwrite core distro packages. |
| | | mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist |
| </pre>mirrorlist=[http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist ''http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist'']</pre>
| | enabled=1 |
| | | gpgcheck=1 |
| </pre>enabled=1</pre>
| | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 |
| | | failovermethod=priority |
| </pre>gpgcheck=1</pre>
| | |
| | | [gf-plus] |
| </pre>gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7</pre>
| | name=Ghettoforge packages that will overwrite core distro packages. |
| | | mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist |
| </pre>failovermethod=priority</pre>
| | # Please read http://ghettoforge.org/index.php/Usage *before* enabling this repository! |
| | | enabled=1 |
| </pre>[gf-plus]</pre>
| | gpgcheck=1 |
| | | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 |
| </pre>name=Ghettoforge packages that will overwrite core distro packages.</pre>
| | failovermethod=priority |
| | | </pre> |
| </pre>mirrorlist=[http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist ''http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist'']</pre>
| |
| | |
| </pre># Please read [http://ghettoforge.org/index.php/Usage ''http://ghettoforge.org/index.php/Usage''] *before* enabling this repository!</pre>
| |
| | |
| </pre>enabled=1</pre>
| |
| | |
| </pre>gpgcheck=1</pre>
| |
| | |
| </pre>gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7</pre>
| |
| | |
| </pre>failovermethod=priority</pre>
| |
|
| |
|
| Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/ | | Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/ |
|
| |
|
| </pre># cd /etc/pki/rpm-gpg/</pre> | | <pre> |
| | | # cd /etc/pki/rpm-gpg/ |
| </pre># wget [http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7 ''http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7'']</pre>
| | # wget http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7 |
| | </pre> |
|
| |
|
| Установите postfix версию 3.х.х | | Установите postfix версию 3.х.х |
|
| |
|
| </pre># yum -y install postfix3 postfix-mysql</pre> | | <pre># yum -y install postfix3 postfix-mysql</pre> |
|
| |
|
| Проверьте postfix версию 3.х.х | | Проверьте postfix версию 3.х.х |
|
| |
|
| </pre># postconf -d | grep mail_version</pre> | | <pre> |
| | # postconf -d | grep mail_version |
|
| |
|
| </pre>mail_version = 3.5.7</pre>
| | mail_version = 3.5.7 |
| | </pre> |
|
| |
|
| # Настройте mariadb, postfix, dovecot для автоматического запуска
| |
|
| |
|
| <pre># systemctl start mariadb</pre>
| | 3. Настройте mariadb, postfix, dovecot для автоматического запуска |
|
| |
|
| </pre># systemctl enable mariadb</pre> | | <pre> |
| | # systemctl start mariadb |
| | # systemctl enable mariadb |
| | # systemctl start postfix |
| | # systemctl enable postfix |
| | # systemctl start dovecot |
| | # systemctl enable dovecot |
| | </pre> |
|
| |
|
| </pre># systemctl start postfix</pre>
| | 4. Проверьте статус mariadb, postfix, dovecot |
|
| |
|
| </pre># systemctl enable postfix</pre> | | <pre> |
| | | # systemctl status mariadb |
| </pre># systemctl start dovecot</pre>
| | # systemctl status postfix |
| | | # systemctl status dovecot |
| </pre># systemctl enable dovecot</pre>
| | </pre> |
| | |
| # Проверьте статус mariadb, postfix, dovecot
| |
| | |
| <pre># systemctl status mariadb</pre>
| |
| | |
| </pre># systemctl status postfix</pre>
| |
| | |
| </pre># systemctl status dovecot</pre>
| |
|
| |
|
| == Настройка MariaDB == | | == Настройка MariaDB == |
|
| |
|
| # Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к
| | 1. Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к /etc/my.cnf.d/maridb-server.cnf для [mysqld] |
|
| |
|
| /etc/my.cnf.d/maridb-server.cnf для [mysqld]
| | <pre># vi /etc/my.cnf</pre> |
| | |
| </pre># vi /etc/my.cnf</pre> | |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>[mysqld]</pre> | | <pre> |
| | | [mysqld] |
| </pre>character-set-server = utf8</pre>
| | character-set-server = utf8 |
| | | collation-server = utf8_general_ci |
| </pre>collation-server = utf8_general_ci</pre>
| | skip-character-set-client-handshake |
| | | bind-address=127.0.0.1 |
| </pre>skip-character-set-client-handshake</pre>
| | datadir=/var/lib/mysql |
| | | socket=/var/lib/mysql/mysql.sock |
| </pre>bind-address=127.0.0.1</pre>
| | # Disabling symbolic-links is recommended to prevent assorted security risks |
| | | symbolic-links=0 |
| </pre>datadir=/var/lib/mysql</pre>
| | # Settings user and group are ignored when systemd is used. |
| | | # If you need to run mysqld under a different user or group, |
| </pre>socket=/var/lib/mysql/mysql.sock</pre>
| | # customize your systemd unit file for mariadb according to the |
| | | # instructions in http://fedoraproject.org/wiki/Systemd |
| </pre># Disabling symbolic-links is recommended to prevent assorted security risks</pre>
| |
| | |
| </pre>symbolic-links=0</pre>
| |
| | |
| </pre># Settings user and group are ignored when systemd is used.</pre>
| |
| | |
| </pre># If you need to run mysqld under a different user or group,</pre>
| |
| | |
| </pre># customize your systemd unit file for mariadb according to the</pre>
| |
| | |
| </pre># instructions in [http://fedoraproject.org/wiki/Systemd ''http://fedoraproject.org/wiki/Systemd'']</pre>
| |
| | |
| </pre>[mysqld_safe]</pre>
| |
| | |
| </pre>log-error=/var/log/mariadb/mariadb.log</pre>
| |
| | |
| </pre>pid-file=/var/run/mariadb/mariadb.pid</pre>
| |
| | |
| </pre>#</pre>
| |
| | |
| </pre># include all files from the config directory</pre>
| |
|
| |
|
| </pre>#</pre>
| | [mysqld_safe] |
| | log-error=/var/log/mariadb/mariadb.log |
| | pid-file=/var/run/mariadb/mariadb.pid |
|
| |
|
| </pre>!includedir /etc/my.cnf.d</pre>
| | # |
| | # include all files from the config directory |
| | # |
| | !includedir /etc/my.cnf.d |
| | </pre> |
|
| |
|
| # Перезапустите MariaDB
| | 2. Перезапустите MariaDB |
|
| |
|
| <pre># systemctl restart mariadb</pre> | | <pre># systemctl restart mariadb</pre> |
|
| |
|
| # Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу ''enter'')
| | 3. Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу ''enter'') |
|
| |
|
| <pre># mysql_secure_installation</pre> | | <pre># mysql_secure_installation</pre> |
|
| |
|
| # Зайдите в аккаунт mysql с новым паролем
| | 4. Зайдите в аккаунт mysql с новым паролем |
|
| |
|
| <pre># mysql -u root -p</pre> | | <pre># mysql -u root -p</pre> |
|
| |
|
| # Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера
| | 5. Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера |
| | |
| <pre># CREATE DATABASE [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 </pre>'eaimail</pre>'];</pre>
| |
| | |
| </pre># USE [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 </pre>'eaimail</pre>'];</pre>
| |
| | |
| # Создайте пользователя с правами доступа к базе eaimail
| |
| | |
| <pre># GRANT SELECT, INSERT, UPDATE, DELETE ON</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>.* TO </pre></pre>yourdbuser</pre></pre>@'localhost' IDENTIFIED BY </pre></pre>yourdbpassword</pre></pre>;</pre>
| |
|
| |
|
| </pre># GRANT SELECT, INSERT, UPDATE, DELETE ON</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>.* TO </pre></pre>yourdbuser</pre></pre>@'localhost.localdomain' IDENTIFIED BY </pre></pre>yourdbpassword</pre></pre>;</pre> | | <pre> |
| | # CREATE DATABASE eaimail; |
| | # USE eaimail; |
| | </pre> |
|
| |
|
| </pre># FLUSH PRIVILEGES;</pre>
| | 6. Создайте пользователя с правами доступа к базе eaimail |
|
| |
|
| # Проверьте созданного пользователя | | <pre> |
| | # GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost' IDENTIFIED BY 'yourdbpassword'; |
| | # GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost.localdomain' IDENTIFIED BY 'yourdbpassword'; |
| | # FLUSH PRIVILEGES; |
| | </pre> |
|
| |
|
| <pre># SHOW GRANTS FOR </pre></pre>yourdbuser</pre></pre>@'localhost';</pre>
| | 7. Проверьте созданного пользователя |
|
| |
|
| # Создайте таблицы для ''domains'', ''forwardings'' (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и ''users'' для создания почтовых ящиков | | <pre># SHOW GRANTS FOR yourdbuser@'localhost';</pre> |
|
| |
|
| <pre># CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );</pre>
| | 8. Создайте таблицы для ''domains'', ''forwardings'' (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и ''users'' для создания почтовых ящиков |
|
| |
|
| </pre># CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );</pre> | | <pre> |
| | # CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); |
| | </pre> |
| | <pre> |
| | # CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); |
| | </pre> |
| | <pre> |
| | # CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); |
| | # quit |
| | </pre> |
|
| |
|
| </pre># CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );</pre>
| | 9. Перезапустите MariaDB |
|
| |
|
| </pre># quit</pre> | | <pre> |
| | # systemctl restart mariadb |
| | </pre> |
|
| |
|
| # Перезапустите MariaDB
| | 10 Настройте ''domain'' и ''users'' в базе данных интернационализированных адресов |
| | |
| <pre># systemctl restart mariadb</pre>
| |
| | |
| # Настройте ''domain'' и ''users'' в базе данных интернационализированных адресов
| |
|
| |
|
| Зайдите в mariadb и выберите базу данных ''eaimail'', введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем | | Зайдите в mariadb и выберите базу данных ''eaimail'', введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем |
|
| |
|
| </pre># mysql -u root -p</pre> | | <pre># mysql -u root -p</pre> |
| | |
| </pre># USE</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>;</pre>
| |
| | |
| </pre># INSERT INTO domains (domain) VALUES (</pre>'test.ru</pre>');</pre>
| |
| | |
| </pre># INSERT INTO domains (domain) VALUES (</pre>'тест.рф</pre>');</pre>
| |
| | |
| </pre># INSERT INTO users (email, password) VALUES (</pre>'[mailto:test@test.ru ''test@test.ru'']</pre>', ENCRYPT(</pre></pre>userpassword</pre></pre>));</pre>
| |
|
| |
|
| </pre># INSERT INTO users (email, password) VALUES (</pre>'[[mailto:тест@тест.рф|''тест@тест.рф'']]</pre>', ENCRYPT(</pre></pre>userpassword</pre></pre>));</pre> | | <pre> |
| | # USE eaimail; |
| | # INSERT INTO domains (domain) VALUES ('test.ru'); |
| | # INSERT INTO domains (domain) VALUES ('тест.рф'); |
| | # INSERT INTO users (email, password) VALUES ('test@test.ru', ENCRYPT('userpassword')); |
| | # INSERT INTO users (email, password) VALUES ('тест@тест.рф', ENCRYPT('userpassword')); |
| | </pre> |
|
| |
|
| Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII | | Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII |
|
| |
|
| </pre># INSERT INTO forwardings (source,destination) VALUES (</pre>'[[mailto:тест@тест.рф|''тест@тест.рф'']]</pre>',</pre>'test@test.ru</pre>');</pre> | | <pre> |
| | | # INSERT INTO forwardings (source,destination) VALUES ('тест@тест.рф','test@test.ru'); |
| </pre># quit</pre>
| | # quit |
| | </pre> |
|
| |
|
| </pre>Настройка Postfix</pre>
| | == Настройка Postfix == |
| | Создайте связь между Postfix и MariaDB |
|
| |
|
| == Создайте связь между Postfix и MariaDB ==
| | 1. Создайте файл-скрипт, чтобы получить значение ''domain'' из базы данных |
| | |
| # Создайте файл-скрипт, чтобы получить значение ''domain'' из базы данных
| |
|
| |
|
| <pre># vi /etc/postfix/mysql-virtual_domains.cf</pre> | | <pre># vi /etc/postfix/mysql-virtual_domains.cf</pre> |
Строка 508: |
Строка 415: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser''] | | <pre> |
| | | user = yourdbuser |
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| | password = yourdbpassword |
| | | dbname = eaimail |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail''] | | query = SELECT domain AS virtual FROM domains WHERE domain='%s' |
| | hosts = 127.0.0.1 |
| | </pre> |
|
| |
|
| </pre>query = SELECT domain AS virtual FROM domains WHERE domain='%s' </pre>
| | 2. Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных
| |
|
| |
|
| <pre># vi /etc/postfix/mysql-virtual_forwardings.cf</pre> | | <pre># vi /etc/postfix/mysql-virtual_forwardings.cf</pre> |
Строка 524: |
Строка 429: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser''] | | <pre> |
| | user = yourdbuser |
| | password = yourdbpassword |
| | dbname = eaimail |
| | query = SELECT destination FROM forwardings WHERE source='%s' |
| | hosts = 127.0.0.1 |
| | </pre> |
|
| |
|
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| | 3. Создайте файл-скрипт для создания почтового ящика и использования его для логина |
| | |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']
| |
| | |
| </pre>query = SELECT destination FROM forwardings WHERE source='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл-скрипт для создания почтового ящика и использования его для логина
| |
|
| |
|
| <pre># vi /etc/postfix/mysql-virtual_mailboxes.cf</pre> | | <pre># vi /etc/postfix/mysql-virtual_mailboxes.cf</pre> |
Строка 540: |
Строка 443: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser''] | | <pre> |
| | user = yourdbuser |
| | password = yourdbpassword |
| | dbname = eaimail |
| | query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' |
| | hosts = 127.0.0.1 |
| | </pre> |
|
| |
|
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| | 4. Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP |
| | |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']
| |
| | |
| </pre>query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP
| |
|
| |
|
| <pre># vi /etc/postfix/mysql-virtual_email2email.cf</pre> | | <pre># vi /etc/postfix/mysql-virtual_email2email.cf</pre> |
Строка 556: |
Строка 457: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>user = yourdbuser</pre> | | <pre> |
| | | user = yourdbuser |
| </pre>password = yourdbpassword</pre>
| | password = yourdbpassword |
| | | dbname = eaimail |
| </pre>dbname = eaimail</pre>
| | query = SELECT email FROM users WHERE email='%s' |
| | | hosts = 127.0.0.1 |
| </pre>query = SELECT email FROM users WHERE email='%s' </pre>
| | </pre> |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Установите необходимые права созданным скриптам
| |
| | |
| <pre># chmod o= /etc/postfix/mysql-virtual_*.cf</pre>
| |
|
| |
|
| </pre># chgrp postfix /etc/postfix/mysql-virtual_*.cf</pre>
| | 5. Установите необходимые права созданным скриптам |
|
| |
|
| # Создайте пользователя и группу для почтового ящика | | <pre> |
| | # chmod o= /etc/postfix/mysql-virtual_*.cf |
| | # chgrp postfix /etc/postfix/mysql-virtual_*.cf |
| | </pre> |
|
| |
|
| <pre># groupadd -g 5000 vmail </pre>
| | 6. Создайте пользователя и группу для почтового ящика |
|
| |
|
| </pre># useradd -g vmail -u 5000 vmail -d /home/vmail -m</pre> | | <pre> |
| | # groupadd -g 5000 vmail |
| | # useradd -g vmail -u 5000 vmail -d /home/vmail -m |
| | </pre> |
|
| |
|
| # Измените /etc/postfix/main.cf
| | 7. Измените /etc/postfix/main.cf |
|
| |
|
| <pre># vi /etc/postfix/main.cf</pre> | | <pre> |
| | # vi /etc/postfix/main.cf |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>inet_interfaces = all</pre> | | <pre> |
| | | inet_interfaces = all |
| </pre>inet_protocols = ipv4</pre>
| | inet_protocols = ipv4 |
| | | mydestination = localhost, localhost.localdomain |
| </pre>mydestination = localhost, localhost.localdomain</pre>
| | alias_database = hash:/etc/aliases |
| | | sendmail_path = /usr/sbin/sendmail.postfix |
| </pre>alias_database = hash:/etc/aliases</pre>
| | newaliases_path = /usr/bin/newaliases.postfix |
| | | mailq_path = /usr/bin/mailq.postfix |
| </pre>sendmail_path = /usr/sbin/sendmail.postfix</pre>
| | meta_directory = /etc/postfix |
| | | shlib_directory = no |
| </pre>newaliases_path = /usr/bin/newaliases.postfix</pre>
| | myhostname = mail.test.ru |
| | | mydomain = test.ru |
| </pre>mailq_path = /usr/bin/mailq.postfix</pre>
| | myorigin = $mydomain |
| | | readme_directory = no |
| </pre>meta_directory = /etc/postfix</pre>
| | mynetworks = 127.0.0.1 |
| | | message_size_limit = 30720000 |
| </pre>shlib_directory = no</pre>
| | smtpd_sasl_auth_enable = yes |
| | | smtpd_sasl_type = dovecot |
| </pre>myhostname =</pre> [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 ''mail.test.ru'']
| | smtpd_sasl_path = private/auth |
| | | smtpd_sasl_authenticated_header = yes |
| </pre>mydomain =</pre> [https://wiki.thnic.or.th/index.php?title=Eai.in.th&action=edit&redlink=1 ''test.ru'']
| | broken_sasl_auth_clients = yes |
| | | smtpd_use_tls = yes |
| </pre>myorigin = $mydomain</pre>
| | smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination |
| | | smtpd_tls_cert_file = /etc/pki/tls/certs/eai.crt |
| </pre>readme_directory = no</pre>
| | smtpd_tls_key_file = /etc/pki/tls/certs/eai.key |
| | | smtpd_tls_security_level = may |
| </pre>mynetworks = 127.0.0.1</pre>
| | smtpd_tls_auth_only = yes |
| | | smtpd_tls_loglevel = 1 |
| </pre>message_size_limit = 30720000</pre>
| | alias_maps = hash:/etc/aliases |
| | | virtual_mailbox_base = /home/vmail |
| </pre>smtpd_sasl_auth_enable = yes</pre>
| | virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf |
| | | virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf |
| </pre>smtpd_sasl_type = dovecot</pre>
| | virtual_uid_maps = static:5000 |
| | | virtual_gid_maps = static:5000 |
| </pre>smtpd_sasl_path = private/auth</pre>
| | virtual_alias_domains = тест.рф |
| | | virtual_transport = dovecot |
| </pre>smtpd_sasl_authenticated_header = yes</pre>
| | virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf |
| | | smtputf8_enable = yes |
| </pre>broken_sasl_auth_clients = yes</pre>
| | proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks |
| | </pre> |
|
| |
|
| </pre>smtpd_use_tls = yes</pre>
| | 8. Измените /etc/postfix/master.cf , добавив команду в конце файла |
| | |
| </pre>smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination</pre>
| |
| | |
| </pre>smtpd_tls_cert_file = /etc/pki/tls/certs/</pre>[https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt'']
| |
| | |
| </pre>smtpd_tls_key_file = /etc/pki/tls/certs/</pre>''eai.key''
| |
| | |
| </pre>smtpd_tls_security_level = may</pre>
| |
| | |
| </pre>smtpd_tls_auth_only = yes</pre>
| |
| | |
| </pre>smtpd_tls_loglevel = 1</pre>
| |
| | |
| </pre>alias_maps = hash:/etc/aliases </pre>
| |
| | |
| </pre>virtual_mailbox_base = /home/vmail</pre>
| |
| | |
| </pre>virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf</pre>
| |
| | |
| </pre>virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf</pre>
| |
| | |
| </pre>virtual_uid_maps = static:5000</pre>
| |
| | |
| </pre>virtual_gid_maps = static:5000</pre>
| |
| | |
| </pre>virtual_alias_domains =</pre> [https://wiki.thnic.or.th/index.php?title=%E0%B8%AD%E0%B8%B5%E0%B9%80%E0%B8%AD%E0%B9%84%E0%B8%AD.%E0%B9%84%E0%B8%97%E0%B8%A2&action=edit&redlink=1 ''тест.рф'']
| |
| | |
| </pre>virtual_transport = dovecot</pre>
| |
| | |
| </pre>virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf</pre>
| |
| | |
| </pre>smtputf8_enable = yes</pre>
| |
| | |
| </pre>proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks</pre>
| |
| | |
| # Измените /etc/postfix/master.cf , добавив команду в конце файла
| |
|
| |
|
| <pre># vi /etc/postfix/master.cf</pre> | | <pre># vi /etc/postfix/master.cf</pre> |
Строка 666: |
Строка 534: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>dovecot unix - n n - - pipe</pre> | | <pre> |
| | dovecot unix - n n - - pipe |
| | flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} |
| | </pre> |
|
| |
|
| </pre>flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}</pre>
| | 9. Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #) |
| | |
| # Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #)
| |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>smtps inet n - - - - smtpd</pre> | | <pre> |
| | smtps inet n - - - - smtpd |
| | -o syslog_name=postfix/smtps |
| | -o smtpd_tls_wrappermode=yes |
| | -o smtpd_sasl_auth_enable=yes |
| | -o smtpd_client_restrictions=permit_sasl_authenticated,reject |
| | -o smtpd_relay_restrictions=permit_sasl_authenticated,reject |
| | -o milter_macro_daemon_name=ORIGINATING |
| | </pre> |
|
| |
|
| -o syslog_name=postfix/smtps
| | 10. Перезапустите postfix |
| | |
| -o smtpd_tls_wrappermode=yes
| |
| | |
| -o smtpd_sasl_auth_enable=yes
| |
| | |
| -o smtpd_client_restrictions=permit_sasl_authenticated,reject
| |
| | |
| -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
| |
| | |
| -o milter_macro_daemon_name=ORIGINATING
| |
| | |
| # Перезапустите postfix
| |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre># systemctl restart postfix</pre> | | <pre># systemctl restart postfix</pre> |
|
| |
|
| # Назначьте алиасы почтовым адресам, изменив файл aliases
| | 11. Назначьте алиасы почтовым адресам, изменив файл aliases |
|
| |
|
| Добавьте 2 строки | | Добавьте 2 строки |
|
| |
|
| </pre># vi /etc/aliases</pre> | | <pre># vi /etc/aliases</pre> |
|
| |
|
| </pre>postmaster: root</pre> | | <pre>postmaster: root |
| | root: postmaster@test.ru</pre> |
|
| |
|
| </pre>root: postmaster@test.ru</pre>
| | 12. Обновите алиасы и перезапустите postfix |
|
| |
|
| # Обновите алиасы и перезапустите postfix
| | <pre> |
| | | # newaliases |
| <pre># newaliases</pre> | | # systemctl restart postfix |
| | | </pre> |
| </pre># systemctl restart postfix</pre>
| |
|
| |
|
| == Настройка Dovecot == | | == Настройка Dovecot == |
|
| |
|
| # Сделайте резервную копию существующей конфигурации
| | 1. Сделайте резервную копию существующей конфигурации |
|
| |
|
| <pre># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup</pre> | | <pre># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup</pre> |
|
| |
|
| # Настройте конфигурацию dovecot
| | 2. Настройте конфигурацию dovecot |
|
| |
|
| <pre># vi /etc/dovecot/dovecot.conf</pre> | | <pre># vi /etc/dovecot/dovecot.conf</pre> |
Строка 722: |
Строка 587: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>protocols = imap pop3 lmtp</pre> | | <pre> |
| | | protocols = imap pop3 lmtp |
| </pre>log_timestamp = "%Y-%m-%d %H:%M:%S "</pre>
| | log_timestamp = "%Y-%m-%d %H:%M:%S " |
| | | mail_location = maildir:/home/vmail/%d/%n/Maildir |
| </pre>mail_location = maildir:/home/vmail/%d/%n/Maildir</pre>
| |
| | |
| </pre>ssl_cert = </etc/pki/tls/certs/</pre>[https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt'']
| |
| | |
| </pre>ssl_key = </etc/pki/tls/certs/</pre>''eai.key''
| |
| | |
| </pre>ssl_dh_parameters_length = 2048 </pre>
| |
| | |
| </pre>ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL</pre>
| |
| | |
| </pre>namespace {</pre>
| |
| | |
| </pre>type = private</pre>
| |
| | |
| </pre>separator = .</pre>
| |
| | |
| </pre>prefix = INBOX.</pre>
| |
| | |
| </pre>inbox = yes</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>service auth {</pre>
| |
| | |
| </pre>unix_listener auth-master {</pre>
| |
| | |
| </pre>mode = 0600</pre>
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Vmail&action=edit&redlink=1 ''vmail'']
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>unix_listener /var/spool/postfix/private/auth {</pre>
| |
| | |
| </pre>mode = 0666</pre>
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Postfix&action=edit&redlink=1 ''postfix'']
| |
|
| |
|
| </pre>group =</pre> [https://wiki.thnic.or.th/index.php?title=Postfix&action=edit&redlink=1 ''postfix''] | | ssl_cert = </etc/pki/tls/certs/eai.crt |
| | ssl_key = </etc/pki/tls/certs/eai.key |
| | ssl_dh_parameters_length = 2048 |
| | ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL |
| | namespace { |
| | type = private |
| | separator = . |
| | prefix = INBOX. |
| | inbox = yes |
| | } |
| | service auth { |
| | unix_listener auth-master { |
| | mode = 0600 |
| | user = vmail |
| | } |
| | unix_listener /var/spool/postfix/private/auth { |
| | mode = 0666 |
| | user = postfix |
| | group = postfix |
| | } |
| | user = root |
| | } |
| | auth_mechanisms = plain login |
| | service auth-worker { |
| | user = root |
| | } |
| | protocol lda { |
| | log_path = /home/vmail/dovecot-deliver.log |
| | auth_socket_path = /var/run/dovecot/auth-master |
| | postmaster_address = postmaster@test.ru |
| | } |
| | protocol pop3 { |
| | pop3_uidl_format = %08Xu%08Xv |
| | pop3_client_workarounds = outlook-no-nuls oe-ns-eoh |
| | } |
| | passdb { |
| | driver = sql |
| | args = /etc/dovecot/dovecot-sql.conf.ext |
| | } |
| | userdb { |
| | driver = static |
| | args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes |
| | } |
| | </pre> |
|
| |
|
| </pre>}</pre>
| | 3. Создайте скрипт, чтобы dovecot мог работать с SQL |
| | |
| </pre>user = root</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>auth_mechanisms = plain login</pre>
| |
| | |
| </pre>service auth-worker {</pre>
| |
| | |
| </pre>user = root</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>protocol lda {</pre>
| |
| | |
| </pre>log_path = /home/vmail/dovecot-deliver.log</pre>
| |
| | |
| </pre>auth_socket_path = /var/run/dovecot/auth-master</pre>
| |
| | |
| </pre>postmaster_address = postmaster@test.ru</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>protocol pop3 {</pre>
| |
| | |
| </pre>pop3_uidl_format = %08Xu%08Xv</pre>
| |
| | |
| </pre>pop3_client_workarounds = outlook-no-nuls oe-ns-eoh</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>passdb {</pre>
| |
| | |
| </pre>driver = sql</pre>
| |
| | |
| </pre>args = /etc/dovecot/dovecot-sql.conf.ext</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>userdb {</pre>
| |
| | |
| </pre>driver = static</pre>
| |
| | |
| </pre>args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| # Создайте скрипт, чтобы dovecot мог работать с SQL
| |
|
| |
|
| <pre># vi /etc/dovecot/dovecot-sql.conf.ext</pre> | | <pre># vi /etc/dovecot/dovecot-sql.conf.ext</pre> |
Строка 820: |
Строка 643: |
| ''Пример '' | | ''Пример '' |
|
| |
|
| </pre>driver = mysql</pre> | | <pre> |
| | | driver = mysql |
| </pre>connect = host=127.0.0.1 dbname=</pre>''eaimail'' </pre>user=</pre>''yourdbuser'' </pre>password=</pre>''yourdbpassword''
| | connect = host=127.0.0.1 dbname=eaimail user=yourdbuser password=yourdbpassword |
| | | default_pass_scheme = CRYPT |
| </pre>default_pass_scheme = CRYPT</pre>
| | password_query = SELECT email as user, password FROM users WHERE email='%u'; |
| | | </pre> |
| </pre>password_query = SELECT email as user, password FROM users WHERE email='%u';</pre>
| |
| | |
| # Установите необходимые права группе dovecot
| |
|
| |
|
| <pre># chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext</pre>
| | 4. Установите необходимые права группе dovecot |
|
| |
|
| </pre># chmod o= /etc/dovecot/dovecot-sql.conf.ext</pre> | | <pre> |
| | # chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext |
| | # chmod o= /etc/dovecot/dovecot-sql.conf.ext |
| | </pre> |
|
| |
|
| # Перезапустите dovecot
| | 5. Перезапустите dovecot |
|
| |
|
| <pre># systemctl restart dovecot</pre> | | <pre># systemctl restart dovecot</pre> |
|
| |
|
| # Проверьте журнал почтового сервера /var/log/maillog
| | 6. Проверьте журнал почтового сервера /var/log/maillog |
|
| |
|
| <pre># tail /var/log/maillog</pre> | | <pre># tail /var/log/maillog</pre> |
Строка 844: |
Строка 667: |
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system</pre> | | <pre> |
| | | Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system |
| </pre>Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix</pre>
| | Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix |
| | | Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled) |
| </pre>Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)</pre>
| | </pre> |
|
| |
|
| == Протестируйте почтовый сервер EAI == | | == Протестируйте почтовый сервер EAI == |
|
| |
|
| # Протестируйте pop3
| | 1. Протестируйте pop3 |
| | |
| <pre># telnet localhost pop3</pre> | | <pre># telnet localhost pop3</pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Trying 127.0.0.1...</pre> | | <pre> |
| | | Trying 127.0.0.1... |
| </pre>Connected to localhost.localdomain.</pre>
| | Connected to localhost.localdomain. |
| | | Escape character is '^]'. |
| </pre>Escape character is '^]'.</pre>
| | +OK Dovecot ready. |
| | | </pre> |
| </pre>+OK Dovecot ready.</pre>
| |
| | |
| # Протестируйте SMTP
| |
|
| |
|
| <pre># telnet localhost 25</pre>
| | 2. Протестируйте SMTP |
|
| |
|
| </pre># ehlo localhost</pre> | | <pre> |
| | # telnet localhost 25 |
| | # ehlo localhost |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>250-mail.test.ru</pre> | | <pre> |
| | | 250-mail.test.ru |
| </pre>250-PIPELINING</pre>
| | 250-PIPELINING |
| | | 250-SIZE 30720000 |
| </pre>250-SIZE 30720000</pre>
| | 250-VRFY |
| | | 250-ETRN |
| </pre>250-VRFY</pre>
| | 250-STARTTLS |
| | | 250-AUTH PLAIN |
| </pre>250-ETRN</pre>
| | 250-AUTH=PLAIN |
| | | 250-ENHANCEDSTATUSCODES |
| </pre>250-STARTTLS</pre>
| | 250-8BITMIME |
| | | 250-DSN |
| </pre>250-AUTH PLAIN</pre>
| | 250 SMTPUTF8 |
| | | </pre> |
| </pre>250-AUTH=PLAIN</pre>
| |
| | |
| </pre>250-ENHANCEDSTATUSCODES</pre>
| |
| | |
| </pre>250-8BITMIME</pre>
| |
| | |
| </pre>250-DSN</pre>
| |
| | |
| </pre>250 SMTPUTF8</pre>
| |
|
| |
|
| # Протестируйте отправку и получение почты при помощи mailx
| | 3. Протестируйте отправку и получение почты при помощи mailx |
|
| |
|
| Проверьте журнал /var/log/maillog Примерный результат: | | Проверьте журнал /var/log/maillog Примерный результат: |
|
| |
|
| </pre># yum -y install mailx</pre> | | <pre> |
| | | # yum -y install mailx |
| </pre># mailx thai@test.ru (input subject then press ''enter'' follow by content and use Ctrl+D for sending out)</pre>
| | # mailx thai@test.ru (input subject then press enter follow by content and use Ctrl+D for sending out) |
|
| |
|
| </pre># tail /var/log/maillog</pre>
| | # tail /var/log/maillog |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root></pre> | | <pre>Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root> |
| | | Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru> |
| </pre>Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru></pre>
| | Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active) |
| | | Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service) |
| </pre>Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active)</pre>
| | Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed |
| | | </pre> |
| </pre>Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)</pre>
| |
| | |
| </pre>Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed</pre>
| |
|
| |
|
| Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/ | | Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/ |
|
| |
|
| </pre># cd /etc/postfix/dynamicmaps.cf.d/</pre> | | <pre> |
| | | # cd /etc/postfix/dynamicmaps.cf.d/ |
| </pre># vi mysql.cf</pre>
| | # vi mysql.cf |
| | | </pre> |
| </pre>mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open</pre>
| |
|
| |
|
| # Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат:
| | <pre>mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open</pre> |
|
| |
|
| </pre># tail /home/vmail/dovecot-deliver.log</pre>
| | 4. Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат: |
|
| |
|
| </pre>2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru>: saved mail to INBOX</pre> | | <pre># tail /home/vmail/dovecot-deliver.log |
|
| |
|
| # Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат:
| | 2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru: saved mail to INBOX</pre> |
|
| |
|
| </pre># cd /home/vmail/test.ru/thai/Maildir</pre>
| | 5. Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат: |
|
| |
|
| </pre># find</pre> | | <pre># cd /home/vmail/test.ru/thai/Maildir |
| | # find |
| | </pre> |
|
| |
|
| ''Пример'' | | ''Пример'' |
|
| |
|
| </pre>.</pre> | | <pre>. |
| | | ./dovecot-uidlist |
| </pre>./dovecot-uidlist</pre>
| | ./cur |
| | | ./new |
| </pre>./cur</pre>
| | ./new/1285609582.P6115Q0M368794.li172-137 |
| | | ./dovecot.index |
| </pre>./new</pre>
| | ./dovecot.index.log |
| | | ./tmp |
| </pre>./new/1285609582.P6115Q0M368794.li172-137</pre>
| | </pre> |
| | |
| </pre>./dovecot.index</pre>
| |
| | |
| </pre>./dovecot.index.log</pre>
| |
|
| |
|
| </pre>./tmp</pre>
| | 6. Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике |
|
| |
|
| # Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике | | <pre># yum -y install mutt |
| | # mutt -f . |
| | </pre> |
|
| |
|
| <pre># yum -y install mutt</pre>
| | 7. Проверьте отправку писем с интернационализированного адресов |
| | |
| </pre># mutt -f .</pre>
| |
| | |
| # Проверьте отправку писем с интернационализированного адресов
| |
|
| |
|
| * В конце отправляемого сообщения поставьте «.» | | * В конце отправляемого сообщения поставьте «.» |
| * Нажмите Ctrl+] , чтобы выйти | | * Нажмите Ctrl+] , чтобы выйти |
|
| |
|
| </pre># telnet localhost 25</pre> | | <pre># telnet localhost 25 |
| | | # EHLO localhost |
| </pre># EHLO localhost</pre>
| | # MAIL FROM: тест@тест.рф SMTPUTF8 |
| | | # RCPT TO: тест1@тест1.рф |
| </pre># MAIL FROM: тест@тест.рф SMTPUTF8 </pre>
| | # data |
| | | # Subject: eai test |
| </pre># RCPT TO: тест1@тест1.рф</pre>
| | # |
| | | # . |
| </pre># data</pre>
| | </pre> |
| | |
| </pre># Subject: eai test</pre>
| |
| | |
| </pre># </pre>
| |
| | |
| </pre># .</pre>
| |
|
| |
|
| == Установите SquirrelMail == | | == Установите SquirrelMail == |
|
| |
|
| # Установите squirrelmail
| | 1. Установите squirrelmail |
| | |
| <pre># yum -y install epel-release</pre>
| |
| | |
| </pre># yum install squirrelmail</pre>
| |
| | |
| # Если у вас не установлен Apache, установите Apache
| |
| | |
| <pre># yum -y install httpd</pre>
| |
|
| |
|
| </pre># systemctl enable httpd</pre> | | <pre> |
| | # yum -y install epel-release |
| | # yum install squirrelmail |
| | </pre> |
|
| |
|
| </pre># systemctl start httpd</pre>
| | 2. Если у вас не установлен Apache, установите Apache |
|
| |
|
| </pre># systemctl status httpd</pre> | | <pre> |
| | # yum -y install httpd |
| | # systemctl enable httpd |
| | # systemctl start httpd |
| | # systemctl status httpd |
| | </pre> |
|
| |
|
| # Скопируйте/перенесите squirrelmail в /var/www/html/
| | 3. Скопируйте/перенесите squirrelmail в /var/www/html/ |
|
| |
|
| <pre># cd /var/www/html/</pre> | | <pre># cd /var/www/html/</pre> |
Строка 1009: |
Строка 809: |
| (скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp) | | (скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp) |
|
| |
|
| # Создайте каталог данных для squirrelmail
| | 4. Создайте каталог данных для squirrelmail |
| | |
| <pre># cd /var/lib/squirrelmail/</pre>
| |
| | |
| </pre># mkdir data</pre>
| |
| | |
| </pre># chmod ugo+rwx data/</pre>
| |
| | |
| # Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail
| |
| | |
| <pre># Test sending and receiving mail</pre>
| |
| | |
| == Создайте SSL-сертификат ==
| |
| | |
| Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot
| |
| | |
| # Создайте индивидуальный ключ
| |
| | |
| <pre># cd /etc/pki/tls/certs</pre>
| |
| | |
| </pre># make</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key'']
| |
| | |
| ''Пример''
| |
| | |
| </pre>umask 77 ; \</pre>
| |
| | |
| </pre>/usr/bin/openssl genrsa -aes128 2048 > eai.key</pre>
| |
| | |
| </pre>Generating RSA private key, 2048 bit long modulus</pre>
| |
| | |
| </pre>...</pre>
| |
| | |
| </pre>...</pre>
| |
| | |
| </pre>e is 65537 (0x10001)</pre>
| |
| | |
| </pre>Enter pass phrase:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#set_passphrase ''#set passphrase'']
| |
| | |
| </pre>Verifying - Enter pass phrase:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#confirm ''#confirm'']
| |
| | |
| # Удалите ''Passphase'' из созданного ключа
| |
| | |
| <pre># openssl rsa -in</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key''] </pre>-out</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key'']
| |
| | |
| ''Пример''
| |
| | |
| </pre>Enter pass phrase for eai.key:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#input_passphrase ''#input passphrase'']
| |
| | |
| </pre>writing RSA key</pre>
| |
| | |
| # Создайте csr
| |
| # </pre># make eai.csr</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>umask 77 ; \</pre>
| |
| | |
| </pre>/usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr</pre>
| |
| | |
| </pre>You are about to be asked to enter information that will be incorporated</pre>
| |
| | |
| </pre>into your certificate request.</pre>
| |
| | |
| </pre>What you are about to enter is what is called a Distinguished Name or a DN.</pre>
| |
| | |
| </pre>There are quite a few fields but you can leave some blank</pre>
| |
| | |
| </pre>For some fields there will be a default value,</pre>
| |
| | |
| </pre>If you enter '.', the field will be left blank.</pre>
| |
| | |
| </pre>-----</pre>
| |
| | |
| </pre>Country Name (2 letter code) [XX]:</pre>RU [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#country ''#country'']
| |
| | |
| </pre>State or Province Name (full name) []:</pre>[https://wiki.thnic.or.th/index.php?title=Bangkok&action=edit&redlink=1 ''Moscow''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#state ''#state'']
| |
| | |
| </pre>Locality Name (eg, city) [Default City]:</pre>[https://wiki.thnic.or.th/index.php?title=Dusit&action=edit&redlink=1 ''Moscow''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#city ''#city'']
| |
| | |
| </pre>Organization Name (eg, company) [Default Company Ltd]:</pre>[https://wiki.thnic.or.th/index.php?title=EAI&action=edit&redlink=1 ''EAI''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#company ''#company'']
| |
| | |
| </pre>Organizational Unit Name (eg, section) []:</pre>[https://wiki.thnic.or.th/index.php?title=IT&action=edit&redlink=1 ''IT''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#department ''#department'']
| |
| | |
| </pre>Common Name (eg, your name or your server's hostname) []:</pre>[https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 ''mail.test.ru''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#server.27s_FQDN ''#server's FQDN'']
| |
| | |
| </pre>Email Address []:</pre>[mailto:xxx@test.ru ''xxx@test.ru''] [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#email_address ''#email address'']
| |
| | |
| </pre>Please enter the following 'extra' attributes</pre>
| |
| | |
| </pre>to be sent with your certificate request</pre>
| |
| | |
| </pre>A challenge password []:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#Enter ''#Enter'']
| |
| | |
| </pre>An optional company name []:</pre> [https://wiki.thnic.or.th/th/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_CentOS_7/en#Enter ''#Enter'']
| |
| | |
| 4. Сгенерируйте ключ
| |
| | |
| </pre># openssl x509 -in</pre> [https://wiki.thnic.or.th/index.php?title=Eai.csr&action=edit&redlink=1 ''eai.csr''] </pre>-out</pre> [https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt''] </pre>-req -signkey</pre> [https://wiki.thnic.or.th/index.php?title=Eai.key&action=edit&redlink=1 ''eai.key''] </pre>-days 3650</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>Signature ok</pre>
| |
| | |
| </pre>subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru</pre>
| |
| | |
| </pre>Getting Private key</pre>
| |
| | |
| == Установка mariadb, Postfix и Dovecot ==
| |
| | |
| # Установите mariadb , Postfix , Dovecot и необходимые пакеты
| |
| | |
| <pre># yum --enablerepo=centosplus install postfix</pre>
| |
| | |
| </pre># yum install dovecot mariadb-server dovecot-mysql</pre>
| |
| | |
| # Обновите postfix с версии 2.x.x до версии 3.x.x
| |
| | |
| На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше.
| |
| | |
| </pre># yum -y remove postfix</pre>
| |
| | |
| </pre># yum -y remove ssmtp</pre>
| |
| | |
| </pre># yum -y remove sendmail</pre>
| |
| | |
| Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше
| |
| | |
| </pre># vi /etc/yum.repos.d/gf.repo</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>[gf]</pre>
| |
| | |
| </pre>name=Ghettoforge packages that won't overwrite core distro packages.</pre>
| |
| | |
| </pre>mirrorlist=[http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist ''http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist'']</pre>
| |
| | |
| </pre>enabled=1</pre>
| |
| | |
| </pre>gpgcheck=1</pre>
| |
| | |
| </pre>gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7</pre>
| |
| | |
| </pre>failovermethod=priority</pre>
| |
| | |
| </pre>[gf-plus]</pre>
| |
| | |
| </pre>name=Ghettoforge packages that will overwrite core distro packages.</pre>
| |
| | |
| </pre>mirrorlist=[http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist ''http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist'']</pre>
| |
| | |
| </pre># Please read [http://ghettoforge.org/index.php/Usage ''http://ghettoforge.org/index.php/Usage''] *before* enabling this repository!</pre>
| |
| | |
| </pre>enabled=1</pre>
| |
| | |
| </pre>gpgcheck=1</pre>
| |
| | |
| </pre>gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7</pre>
| |
| | |
| </pre>failovermethod=priority</pre>
| |
| | |
| Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/
| |
| | |
| </pre># cd /etc/pki/rpm-gpg/</pre>
| |
| | |
| </pre># wget [http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7 ''http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7'']</pre>
| |
| | |
| Установите postfix версию 3.х.х
| |
| | |
| </pre># yum -y install postfix3 postfix-mysql</pre>
| |
| | |
| Проверьте postfix версию 3.х.х
| |
| | |
| </pre># postconf -d | grep mail_version</pre>
| |
| | |
| </pre>mail_version = 3.5.7</pre>
| |
| | |
| # Настройте mariadb, postfix, dovecot для автоматического запуска
| |
| | |
| <pre># systemctl start mariadb</pre>
| |
| | |
| </pre># systemctl enable mariadb</pre>
| |
| | |
| </pre># systemctl start postfix</pre>
| |
| | |
| </pre># systemctl enable postfix</pre>
| |
| | |
| </pre># systemctl start dovecot</pre>
| |
| | |
| </pre># systemctl enable dovecot</pre>
| |
| | |
| # Проверьте статус mariadb, postfix, dovecot
| |
| | |
| <pre># systemctl status mariadb</pre>
| |
| | |
| </pre># systemctl status postfix</pre>
| |
| | |
| </pre># systemctl status dovecot</pre>
| |
| | |
| == Настройка MariaDB ==
| |
| | |
| # Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к
| |
| | |
| <blockquote>/etc/my.cnf.d/maridb-server.cnf для [mysqld]
| |
| | |
| </pre># vi /etc/my.cnf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>[mysqld]</pre>
| |
| | |
| </pre>character-set-server = utf8</pre>
| |
| | |
| </pre>collation-server = utf8_general_ci</pre>
| |
| | |
| </pre>skip-character-set-client-handshake</pre>
| |
| | |
| </pre>bind-address=127.0.0.1</pre>
| |
| | |
| </pre>datadir=/var/lib/mysql</pre>
| |
| | |
| </pre>socket=/var/lib/mysql/mysql.sock</pre>
| |
| | |
| </pre># Disabling symbolic-links is recommended to prevent assorted security risks</pre>
| |
| | |
| </pre>symbolic-links=0</pre>
| |
| | |
| </pre># Settings user and group are ignored when systemd is used.</pre>
| |
| | |
| </pre># If you need to run mysqld under a different user or group,</pre>
| |
| | |
| </pre># customize your systemd unit file for mariadb according to the</pre>
| |
| | |
| </pre># instructions in [http://fedoraproject.org/wiki/Systemd ''http://fedoraproject.org/wiki/Systemd'']</pre>
| |
| | |
| </pre>[mysqld_safe]</pre>
| |
| | |
| </pre>log-error=/var/log/mariadb/mariadb.log</pre>
| |
| | |
| </pre>pid-file=/var/run/mariadb/mariadb.pid</pre>
| |
| | |
| </pre>#</pre>
| |
| | |
| </pre># include all files from the config directory</pre>
| |
| | |
| </pre>#</pre>
| |
| | |
| </pre>!includedir /etc/my.cnf.d</pre>
| |
| | |
| # Перезапустите MariaDB
| |
| | |
| <pre># systemctl restart mariadb</pre>
| |
| | |
| # Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу ''enter'')
| |
| | |
| <pre># mysql_secure_installation</pre>
| |
| | |
| # Зайдите в аккаунт mysql с новым паролем
| |
| | |
| <pre># mysql -u root -p</pre>
| |
| | |
| # Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера
| |
| | |
| <pre># CREATE DATABASE [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 </pre>'eaimail</pre>'];</pre>
| |
| | |
| </pre># USE [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 </pre>'eaimail</pre>'];</pre>
| |
| | |
| # Создайте пользователя с правами доступа к базе eaimail
| |
| | |
| <pre># GRANT SELECT, INSERT, UPDATE, DELETE ON</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>.* TO </pre></pre>yourdbuser</pre></pre>@'localhost' IDENTIFIED BY </pre></pre>yourdbpassword</pre></pre>;</pre>
| |
| | |
| </pre># GRANT SELECT, INSERT, UPDATE, DELETE ON</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>.* TO </pre></pre>yourdbuser</pre></pre>@'localhost.localdomain' IDENTIFIED BY </pre></pre>yourdbpassword</pre></pre>;</pre>
| |
| | |
| </pre># FLUSH PRIVILEGES;</pre>
| |
| | |
| # Проверьте созданного пользователя
| |
| | |
| <pre># SHOW GRANTS FOR </pre></pre>yourdbuser</pre></pre>@'localhost';</pre>
| |
| | |
| # Создайте таблицы для ''domains'', ''forwardings'' (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и ''users'' для создания почтовых ящиков
| |
| | |
| <pre># CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );</pre>
| |
| | |
| </pre># CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );</pre>
| |
| | |
| </pre># CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );</pre>
| |
| | |
| </pre># quit</pre>
| |
| | |
| # Перезапустите MariaDB
| |
| | |
| <pre># systemctl restart mariadb</pre>
| |
| | |
| # Настройте ''domain'' и ''users'' в базе данных интернационализированных адресов
| |
| | |
| <blockquote>Зайдите в mariadb и выберите базу данных ''eaimail'', введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем
| |
| | |
| </pre># mysql -u root -p</pre>
| |
| | |
| </pre># USE</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']</pre>;</pre>
| |
| | |
| </pre># INSERT INTO domains (domain) VALUES (</pre>'test.ru</pre>');</pre>
| |
| | |
| </pre># INSERT INTO domains (domain) VALUES (</pre>'тест.рф</pre>');</pre>
| |
| | |
| </pre># INSERT INTO users (email, password) VALUES (</pre>'[mailto:test@test.ru ''test@test.ru'']</pre>', ENCRYPT(</pre></pre>userpassword</pre></pre>));</pre>
| |
| | |
| </pre># INSERT INTO users (email, password) VALUES (</pre>'[[mailto:тест@тест.рф|''тест@тест.рф'']]</pre>', ENCRYPT(</pre></pre>userpassword</pre></pre>));</pre>
| |
| | |
| Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII
| |
| | |
| </pre># INSERT INTO forwardings (source,destination) VALUES (</pre>'[[mailto:тест@тест.рф|''тест@тест.рф'']]</pre>',</pre>'test@test.ru</pre>');</pre>
| |
| | |
| </pre># quit</pre>
| |
| | |
| </pre>Настройка Postfix</pre>
| |
| | |
| == Создайте связь между Postfix и MariaDB ==
| |
| | |
| # Создайте файл-скрипт, чтобы получить значение ''domain'' из базы данных
| |
| | |
| <pre># vi /etc/postfix/mysql-virtual_domains.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser'']
| |
| | |
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| |
| | |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']
| |
| | |
| </pre>query = SELECT domain AS virtual FROM domains WHERE domain='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных
| |
| | |
| <pre># vi /etc/postfix/mysql-virtual_forwardings.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser'']
| |
| | |
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| |
| | |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']
| |
| | |
| </pre>query = SELECT destination FROM forwardings WHERE source='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл-скрипт для создания почтового ящика и использования его для логина
| |
| | |
| <pre># vi /etc/postfix/mysql-virtual_mailboxes.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbuser&action=edit&redlink=1 ''yourdbuser'']
| |
| | |
| </pre>password =</pre> [https://wiki.thnic.or.th/index.php?title=Yourdbpassword&action=edit&redlink=1 ''yourdbpassword'']
| |
| | |
| </pre>dbname =</pre> [https://wiki.thnic.or.th/index.php?title=Eaimail&action=edit&redlink=1 ''eaimail'']
| |
| | |
| </pre>query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP
| |
| | |
| <pre># vi /etc/postfix/mysql-virtual_email2email.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>user = yourdbuser</pre>
| |
| | |
| </pre>password = yourdbpassword</pre>
| |
| | |
| </pre>dbname = eaimail</pre>
| |
| | |
| </pre>query = SELECT email FROM users WHERE email='%s' </pre>
| |
| | |
| </pre>hosts = 127.0.0.1</pre>
| |
| | |
| # Установите необходимые права созданным скриптам
| |
| | |
| <pre># chmod o= /etc/postfix/mysql-virtual_*.cf</pre>
| |
| | |
| </pre># chgrp postfix /etc/postfix/mysql-virtual_*.cf</pre>
| |
| | |
| # Создайте пользователя и группу для почтового ящика
| |
| | |
| <pre># groupadd -g 5000 vmail </pre>
| |
| | |
| </pre># useradd -g vmail -u 5000 vmail -d /home/vmail -m</pre>
| |
| | |
| # Измените /etc/postfix/main.cf
| |
| | |
| <pre># vi /etc/postfix/main.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>inet_interfaces = all</pre>
| |
| | |
| </pre>inet_protocols = ipv4</pre>
| |
| | |
| </pre>mydestination = localhost, localhost.localdomain</pre>
| |
| | |
| </pre>alias_database = hash:/etc/aliases</pre>
| |
| | |
| </pre>sendmail_path = /usr/sbin/sendmail.postfix</pre>
| |
| | |
| </pre>newaliases_path = /usr/bin/newaliases.postfix</pre>
| |
| | |
| </pre>mailq_path = /usr/bin/mailq.postfix</pre>
| |
| | |
| </pre>meta_directory = /etc/postfix</pre>
| |
| | |
| </pre>shlib_directory = no</pre>
| |
| | |
| </pre>myhostname =</pre> [https://wiki.thnic.or.th/index.php?title=Mail.eai.in.th&action=edit&redlink=1 ''mail.test.ru'']
| |
| | |
| </pre>mydomain =</pre> [https://wiki.thnic.or.th/index.php?title=Eai.in.th&action=edit&redlink=1 ''test.ru'']
| |
| | |
| </pre>myorigin = $mydomain</pre>
| |
| | |
| </pre>readme_directory = no</pre>
| |
| | |
| </pre>mynetworks = 127.0.0.1</pre>
| |
| | |
| </pre>message_size_limit = 30720000</pre>
| |
| | |
| </pre>smtpd_sasl_auth_enable = yes</pre>
| |
| | |
| </pre>smtpd_sasl_type = dovecot</pre>
| |
| | |
| </pre>smtpd_sasl_path = private/auth</pre>
| |
| | |
| </pre>smtpd_sasl_authenticated_header = yes</pre>
| |
| | |
| </pre>broken_sasl_auth_clients = yes</pre>
| |
| | |
| </pre>smtpd_use_tls = yes</pre>
| |
| | |
| </pre>smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination</pre>
| |
| | |
| </pre>smtpd_tls_cert_file = /etc/pki/tls/certs/</pre>[https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt'']
| |
| | |
| </pre>smtpd_tls_key_file = /etc/pki/tls/certs/</pre>''eai.key''
| |
| | |
| </pre>smtpd_tls_security_level = may</pre>
| |
| | |
| </pre>smtpd_tls_auth_only = yes</pre>
| |
| | |
| </pre>smtpd_tls_loglevel = 1</pre>
| |
| | |
| </pre>alias_maps = hash:/etc/aliases </pre>
| |
| | |
| </pre>virtual_mailbox_base = /home/vmail</pre>
| |
| | |
| </pre>virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf</pre>
| |
| | |
| </pre>virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf</pre>
| |
| | |
| </pre>virtual_uid_maps = static:5000</pre>
| |
| | |
| </pre>virtual_gid_maps = static:5000</pre>
| |
| | |
| </pre>virtual_alias_domains =</pre> [https://wiki.thnic.or.th/index.php?title=%E0%B8%AD%E0%B8%B5%E0%B9%80%E0%B8%AD%E0%B9%84%E0%B8%AD.%E0%B9%84%E0%B8%97%E0%B8%A2&action=edit&redlink=1 ''тест.рф'']
| |
| | |
| </pre>virtual_transport = dovecot</pre>
| |
| | |
| </pre>virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf</pre>
| |
| | |
| </pre>smtputf8_enable = yes</pre>
| |
| | |
| </pre>proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks</pre>
| |
| | |
| # Измените /etc/postfix/master.cf , добавив команду в конце файла
| |
| | |
| <pre># vi /etc/postfix/master.cf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>dovecot unix - n n - - pipe</pre>
| |
| | |
| </pre>flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}</pre>
| |
| | |
| # Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #)
| |
| | |
| ''Пример''
| |
| | |
| </pre>smtps inet n - - - - smtpd</pre>
| |
| | |
| -o syslog_name=postfix/smtps
| |
| | |
| -o smtpd_tls_wrappermode=yes
| |
| | |
| -o smtpd_sasl_auth_enable=yes
| |
| | |
| -o smtpd_client_restrictions=permit_sasl_authenticated,reject
| |
| | |
| -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
| |
| | |
| -o milter_macro_daemon_name=ORIGINATING
| |
| | |
| # Перезапустите postfix
| |
| | |
| ''Пример''
| |
| | |
| </pre># systemctl restart postfix</pre>
| |
| | |
| # Назначьте алиасы почтовым адресам, изменив файл aliases
| |
| | |
| <blockquote>Добавьте 2 строки
| |
| | |
| </pre># vi /etc/aliases</pre>
| |
| | |
| </pre>postmaster: root</pre>
| |
| | |
| </pre>root: postmaster@test.ru</pre>
| |
| | |
| # Обновите алиасы и перезапустите postfix
| |
| | |
| <pre># newaliases</pre>
| |
| | |
| </pre># systemctl restart postfix</pre>
| |
| | |
| == Настройка Dovecot ==
| |
| | |
| # Сделайте резервную копию существующей конфигурации
| |
| | |
| <pre># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup</pre>
| |
| | |
| # Настройте конфигурацию dovecot
| |
| | |
| <pre># vi /etc/dovecot/dovecot.conf</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>protocols = imap pop3 lmtp</pre>
| |
| | |
| </pre>log_timestamp = "%Y-%m-%d %H:%M:%S "</pre>
| |
| | |
| </pre>mail_location = maildir:/home/vmail/%d/%n/Maildir</pre>
| |
| | |
| </pre>ssl_cert = </etc/pki/tls/certs/</pre>[https://wiki.thnic.or.th/index.php?title=Eai.crt&action=edit&redlink=1 ''eai.crt'']
| |
| | |
| </pre>ssl_key = </etc/pki/tls/certs/</pre>''eai.key''
| |
| | |
| </pre>ssl_dh_parameters_length = 2048 </pre>
| |
| | |
| </pre>ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL</pre>
| |
| | |
| </pre>namespace {</pre>
| |
| | |
| </pre>type = private</pre>
| |
| | |
| </pre>separator = .</pre>
| |
| | |
| </pre>prefix = INBOX.</pre>
| |
| | |
| </pre>inbox = yes</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>service auth {</pre>
| |
| | |
| </pre>unix_listener auth-master {</pre>
| |
| | |
| </pre>mode = 0600</pre>
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Vmail&action=edit&redlink=1 ''vmail'']
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>unix_listener /var/spool/postfix/private/auth {</pre>
| |
| | |
| </pre>mode = 0666</pre>
| |
| | |
| </pre>user =</pre> [https://wiki.thnic.or.th/index.php?title=Postfix&action=edit&redlink=1 ''postfix'']
| |
| | |
| </pre>group =</pre> [https://wiki.thnic.or.th/index.php?title=Postfix&action=edit&redlink=1 ''postfix'']
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>user = root</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>auth_mechanisms = plain login</pre>
| |
| | |
| </pre>service auth-worker {</pre>
| |
| | |
| </pre>user = root</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>protocol lda {</pre>
| |
| | |
| </pre>log_path = /home/vmail/dovecot-deliver.log</pre>
| |
| | |
| </pre>auth_socket_path = /var/run/dovecot/auth-master</pre>
| |
| | |
| </pre>postmaster_address = postmaster@test.ru</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>protocol pop3 {</pre>
| |
| | |
| </pre>pop3_uidl_format = %08Xu%08Xv</pre>
| |
| | |
| </pre>pop3_client_workarounds = outlook-no-nuls oe-ns-eoh</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>passdb {</pre>
| |
| | |
| </pre>driver = sql</pre>
| |
| | |
| </pre>args = /etc/dovecot/dovecot-sql.conf.ext</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| </pre>userdb {</pre>
| |
| | |
| </pre>driver = static</pre>
| |
| | |
| </pre>args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes</pre>
| |
| | |
| </pre>}</pre>
| |
| | |
| # Создайте скрипт, чтобы dovecot мог работать с SQL
| |
| | |
| <pre># vi /etc/dovecot/dovecot-sql.conf.ext</pre>
| |
| | |
| ''Пример ''
| |
| | |
| </pre>driver = mysql</pre>
| |
| | |
| </pre>connect = host=127.0.0.1 dbname=</pre>''eaimail'' </pre>user=</pre>''yourdbuser'' </pre>password=</pre>''yourdbpassword''
| |
| | |
| </pre>default_pass_scheme = CRYPT</pre>
| |
| | |
| </pre>password_query = SELECT email as user, password FROM users WHERE email='%u';</pre>
| |
| | |
| # Установите необходимые права группе dovecot
| |
| | |
| <pre># chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext</pre>
| |
| | |
| </pre># chmod o= /etc/dovecot/dovecot-sql.conf.ext</pre>
| |
| | |
| # Перезапустите dovecot
| |
| | |
| <pre># systemctl restart dovecot</pre>
| |
| | |
| # Проверьте журнал почтового сервера /var/log/maillog
| |
| | |
| <pre># tail /var/log/maillog</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system</pre>
| |
| | |
| </pre>Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix</pre>
| |
| | |
| </pre>Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)</pre>
| |
| | |
| == Протестируйте почтовый сервер EAI ==
| |
| | |
| # Протестируйте pop3
| |
| | |
| <pre># telnet localhost pop3</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>Trying 127.0.0.1...</pre>
| |
| | |
| </pre>Connected to localhost.localdomain.</pre>
| |
| | |
| </pre>Escape character is '^]'.</pre>
| |
| | |
| </pre>+OK Dovecot ready.</pre>
| |
| | |
| # Протестируйте SMTP
| |
| | |
| <pre># telnet localhost 25</pre>
| |
| | |
| </pre># ehlo localhost</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>250-mail.test.ru</pre>
| |
| | |
| </pre>250-PIPELINING</pre>
| |
| | |
| </pre>250-SIZE 30720000</pre>
| |
| | |
| </pre>250-VRFY</pre>
| |
| | |
| </pre>250-ETRN</pre>
| |
| | |
| </pre>250-STARTTLS</pre>
| |
| | |
| </pre>250-AUTH PLAIN</pre>
| |
| | |
| </pre>250-AUTH=PLAIN</pre>
| |
| | |
| </pre>250-ENHANCEDSTATUSCODES</pre>
| |
| | |
| </pre>250-8BITMIME</pre>
| |
| | |
| </pre>250-DSN</pre>
| |
| | |
| </pre>250 SMTPUTF8</pre>
| |
| | |
| # Протестируйте отправку и получение почты при помощи mailx
| |
| | |
| Проверьте журнал /var/log/maillog Примерный результат:
| |
| | |
| </pre># yum -y install mailx</pre>
| |
| | |
| </pre># mailx thai@test.ru (input subject then press ''enter'' follow by content and use Ctrl+D for sending out)</pre>
| |
| | |
| </pre># tail /var/log/maillog</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root></pre>
| |
| | |
| </pre>Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru></pre>
| |
| | |
| </pre>Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active)</pre>
| |
| | |
| </pre>Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)</pre>
| |
| | |
| </pre>Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed</pre>
| |
| | |
| Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/
| |
| | |
| </pre># cd /etc/postfix/dynamicmaps.cf.d/</pre>
| |
| | |
| </pre># vi mysql.cf</pre>
| |
| | |
| </pre>mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open</pre>
| |
| | |
| # Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат:
| |
| | |
| </pre># tail /home/vmail/dovecot-deliver.log</pre>
| |
| | |
| </pre>2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru>: saved mail to INBOX</pre>
| |
| | |
| # Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат:
| |
| | |
| </pre># cd /home/vmail/test.ru/thai/Maildir</pre>
| |
| | |
| </pre># find</pre>
| |
| | |
| ''Пример''
| |
| | |
| </pre>.</pre>
| |
| | |
| </pre>./dovecot-uidlist</pre>
| |
| | |
| </pre>./cur</pre>
| |
| | |
| </pre>./new</pre>
| |
| | |
| </pre>./new/1285609582.P6115Q0M368794.li172-137</pre>
| |
| | |
| </pre>./dovecot.index</pre>
| |
| | |
| </pre>./dovecot.index.log</pre>
| |
| | |
| </pre>./tmp</pre>
| |
| | |
| # Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике
| |
| | |
| <pre># yum -y install mutt</pre>
| |
| | |
| </pre># mutt -f .</pre>
| |
| | |
| # Проверьте отправку писем с интернационализированного адресов
| |
| | |
| * В конце отправляемого сообщения поставьте «.»
| |
| * Нажмите Ctrl+] , чтобы выйти
| |
| | |
| </pre># telnet localhost 25</pre>
| |
| | |
| </pre># EHLO localhost</pre>
| |
| | |
| </pre># MAIL FROM: тест@тест.рф SMTPUTF8 </pre>
| |
| | |
| </pre># RCPT TO: тест1@тест1.рф</pre>
| |
| | |
| </pre># data</pre>
| |
| | |
| </pre># Subject: eai test</pre>
| |
| | |
| </pre># </pre>
| |
| | |
| </pre># .</pre>
| |
| | |
| == Установите SquirrelMail ==
| |
| | |
| # Установите squirrelmail
| |
| | |
| <pre># yum -y install epel-release</pre>
| |
| | |
| </pre># yum install squirrelmail</pre>
| |
| | |
| # Если у вас не установлен Apache, установите Apache
| |
| | |
| <pre># yum -y install httpd</pre>
| |
| | |
| </pre># systemctl enable httpd</pre>
| |
| | |
| </pre># systemctl start httpd</pre>
| |
| | |
| </pre># systemctl status httpd</pre>
| |
| | |
| # Скопируйте/перенесите squirrelmail в /var/www/html/
| |
| | |
| <pre># cd /var/www/html/</pre>
| |
| | |
| (скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp)
| |
| | |
| # Создайте каталог данных для squirrelmail
| |
| | |
| <pre># cd /var/lib/squirrelmail/</pre>
| |
| | |
| </pre># mkdir data</pre>
| |
|
| |
|
| </pre># chmod ugo+rwx data/</pre> | | <pre> |
| | # cd /var/lib/squirrelmail/ |
| | # mkdir data |
| | # chmod ugo+rwx data/ |
| | </pre> |
|
| |
|
| # Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail
| | 5. Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail |
|
| |
|
| <pre># Test sending and receiving mail</pre> | | <pre># Test sending and receiving mail</pre> |
Инструкция по установке EAI почтового сервера под ОС CentOS 7
Почтовый сервер с поддержкой EAI
С помощью данной инструкции вы сможете установить почтовый сервер с поддержкой использования интернационализированных адресов электронной почты (EAI) на базе ПО с открытым исходным кодом. Почтовый сервер можно развивать далее с помощью другого ПО.
Необходимое ПО
- Centos 7.4
- Postfix 3.2.3
- Dovecot 2.2.10
- MariaDB 10.3.11
- Squirrelmail 5.5.56
Примечания:
- в данной инструкции не разъясняется, как установить Centos 7.4
- версия Postfix 3.x.x и выше поддерживает EAI
- в реальных условиях необходимо также настроить сервер DNS
- putty и winscp используются для подключения к серверу
Установка EAI почтового сервера
Задайте имя хоста
1. Обновите пакеты почтового сервера до последней версии
# yum -y update
2. Задайте имя хоста (например, mail.test.ru) с помощью команды
# hostnamectl set-hostname mail.test.ru
3. Добавьте имя хоста в файл hosts
# vi /etc/hosts
Пример файла hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.test.ru
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 mail.test.ru
*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)
4. Установите wget для скачивания дополнительного ПО
# yum -y install wget
5. Установите telnet для тестирования работы почтового сервера
# yum -y install telnet
Настройте файрвол
1. Проверьте, что у почтового сервиса имеется статус «firewalld service»
Статус должен быть активным (работающим)
# systemctl status firewalld
Пример
Active: active (running) since Mon 2019-11-18 14:12:03 +07; 1h 13min ago
2. Проверьте открытые зону файрвола и сетевой интерфейс
# firewall-cmd --get-active-zones
Пример
public
interfaces: ens32
3. Проверьте сервисы файрвола в публичной зоне
# firewall-cmd --zone=public --list-services
Пример
cockpit dhcpv6-client ssh
4. Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-service=mysql
# firewall-cmd --permanent --zone=public --add-service=smtp
# firewall-cmd --permanent --zone=public --add-service=smtps
# firewall-cmd --permanent --zone=public --add-service=imap
# firewall-cmd --permanent --zone=public --add-service=imaps
# firewall-cmd --reload
5. Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы *Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера:
# firewall-cmd --zone=public --list-services
Пример
cockpit dhcpv6-client http https imap imaps mysql smtp smtps ssh
6. В этом примере мы открыли SELinux для удобства настройки
# vi /etc/selinux/config
Пример
This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
7. Перезапустите сервер
# reboot
# sestatus
Пример
disabled
Создайте SSL-сертификат
Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot
1. Создайте индивидуальный ключ
# cd /etc/pki/tls/certs
# make eai.key
Пример
umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > eai.key
Generating RSA private key, 2048 bit long modulus
...
...
e is 65537 (0x10001)
Enter pass phrase: #set passphrase
Verifying - Enter pass phrase: #confirm
2. Удалите Passphase из созданного ключа
# openssl rsa -in eai.key -out eai.key
''Пример''
<pre>
Enter pass phrase for eai.key: #input passphrase
writing RSA key
3. Создайте csr
# make eai.csr
Пример
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:RU #country
State or Province Name (full name) []:Moscow #state
Locality Name (eg, city) [Default City]:Moscow #city
Organization Name (eg, company) [Default Company Ltd]:EAI #company
Organizational Unit Name (eg, section) []:IT #department
Common Name (eg, your name or your server's hostname) []:mail.test.ru #server's FQDN
Email Address []:xxx@test.ru #email address
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #Enter
An optional company name []: #Enter
4. Сгенерируйте ключ
# openssl x509 -in eai.csr -out eai.crt -req -signkey eai.key -days 3650
Пример
Signature ok
subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru
Getting Private key
Установка mariadb, Postfix и Dovecot
1. Установите mariadb , Postfix , Dovecot и необходимые пакеты
# yum --enablerepo=centosplus install postfix
# yum install dovecot mariadb-server dovecot-mysql
2. Обновите postfix с версии 2.x.x до версии 3.x.x
На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше.
# yum -y remove postfix
# yum -y remove ssmtp
# yum -y remove sendmail
Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше
# vi /etc/yum.repos.d/gf.repo
Пример
[gf]
name=Ghettoforge packages that won't overwrite core distro packages.
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7
failovermethod=priority
[gf-plus]
name=Ghettoforge packages that will overwrite core distro packages.
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist
# Please read http://ghettoforge.org/index.php/Usage *before* enabling this repository!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7
failovermethod=priority
Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/
# cd /etc/pki/rpm-gpg/
# wget http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7
Установите postfix версию 3.х.х
# yum -y install postfix3 postfix-mysql
Проверьте postfix версию 3.х.х
# postconf -d | grep mail_version
mail_version = 3.5.7
3. Настройте mariadb, postfix, dovecot для автоматического запуска
# systemctl start mariadb
# systemctl enable mariadb
# systemctl start postfix
# systemctl enable postfix
# systemctl start dovecot
# systemctl enable dovecot
4. Проверьте статус mariadb, postfix, dovecot
# systemctl status mariadb
# systemctl status postfix
# systemctl status dovecot
Настройка MariaDB
1. Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к /etc/my.cnf.d/maridb-server.cnf для [mysqld]
# vi /etc/my.cnf
Пример
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
bind-address=127.0.0.1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
2. Перезапустите MariaDB
# systemctl restart mariadb
3. Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу enter)
# mysql_secure_installation
4. Зайдите в аккаунт mysql с новым паролем
# mysql -u root -p
5. Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера
# CREATE DATABASE eaimail;
# USE eaimail;
6. Создайте пользователя с правами доступа к базе eaimail
# GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost' IDENTIFIED BY 'yourdbpassword';
# GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost.localdomain' IDENTIFIED BY 'yourdbpassword';
# FLUSH PRIVILEGES;
7. Проверьте созданного пользователя
# SHOW GRANTS FOR yourdbuser@'localhost';
8. Создайте таблицы для domains, forwardings (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и users для создания почтовых ящиков
# CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
# CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
# CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
# quit
9. Перезапустите MariaDB
# systemctl restart mariadb
10 Настройте domain и users в базе данных интернационализированных адресов
Зайдите в mariadb и выберите базу данных eaimail, введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем
# mysql -u root -p
# USE eaimail;
# INSERT INTO domains (domain) VALUES ('test.ru');
# INSERT INTO domains (domain) VALUES ('тест.рф');
# INSERT INTO users (email, password) VALUES ('test@test.ru', ENCRYPT('userpassword'));
# INSERT INTO users (email, password) VALUES ('тест@тест.рф', ENCRYPT('userpassword'));
Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII
# INSERT INTO forwardings (source,destination) VALUES ('тест@тест.рф','test@test.ru');
# quit
Настройка Postfix
Создайте связь между Postfix и MariaDB
1. Создайте файл-скрипт, чтобы получить значение domain из базы данных
# vi /etc/postfix/mysql-virtual_domains.cf
Пример
user = yourdbuser
password = yourdbpassword
dbname = eaimail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1
2. Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных
# vi /etc/postfix/mysql-virtual_forwardings.cf
Пример
user = yourdbuser
password = yourdbpassword
dbname = eaimail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1
3. Создайте файл-скрипт для создания почтового ящика и использования его для логина
# vi /etc/postfix/mysql-virtual_mailboxes.cf
Пример
user = yourdbuser
password = yourdbpassword
dbname = eaimail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
4. Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP
# vi /etc/postfix/mysql-virtual_email2email.cf
Пример
user = yourdbuser
password = yourdbpassword
dbname = eaimail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1
5. Установите необходимые права созданным скриптам
# chmod o= /etc/postfix/mysql-virtual_*.cf
# chgrp postfix /etc/postfix/mysql-virtual_*.cf
6. Создайте пользователя и группу для почтового ящика
# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m
7. Измените /etc/postfix/main.cf
# vi /etc/postfix/main.cf
Пример
inet_interfaces = all
inet_protocols = ipv4
mydestination = localhost, localhost.localdomain
alias_database = hash:/etc/aliases
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
meta_directory = /etc/postfix
shlib_directory = no
myhostname = mail.test.ru
mydomain = test.ru
myorigin = $mydomain
readme_directory = no
mynetworks = 127.0.0.1
message_size_limit = 30720000
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_use_tls = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_tls_cert_file = /etc/pki/tls/certs/eai.crt
smtpd_tls_key_file = /etc/pki/tls/certs/eai.key
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
alias_maps = hash:/etc/aliases
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_domains = тест.рф
virtual_transport = dovecot
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
smtputf8_enable = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
8. Измените /etc/postfix/master.cf , добавив команду в конце файла
# vi /etc/postfix/master.cf
Пример
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
9. Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #)
Пример
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
10. Перезапустите postfix
Пример
# systemctl restart postfix
11. Назначьте алиасы почтовым адресам, изменив файл aliases
Добавьте 2 строки
# vi /etc/aliases
postmaster: root
root: postmaster@test.ru
12. Обновите алиасы и перезапустите postfix
# newaliases
# systemctl restart postfix
Настройка Dovecot
1. Сделайте резервную копию существующей конфигурации
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
2. Настройте конфигурацию dovecot
# vi /etc/dovecot/dovecot.conf
Пример
protocols = imap pop3 lmtp
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
ssl_cert = </etc/pki/tls/certs/eai.crt
ssl_key = </etc/pki/tls/certs/eai.key
ssl_dh_parameters_length = 2048
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL
namespace {
type = private
separator = .
prefix = INBOX.
inbox = yes
}
service auth {
unix_listener auth-master {
mode = 0600
user = vmail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
user = root
}
auth_mechanisms = plain login
service auth-worker {
user = root
}
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = postmaster@test.ru
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
3. Создайте скрипт, чтобы dovecot мог работать с SQL
# vi /etc/dovecot/dovecot-sql.conf.ext
Пример
driver = mysql
connect = host=127.0.0.1 dbname=eaimail user=yourdbuser password=yourdbpassword
default_pass_scheme = CRYPT
password_query = SELECT email as user, password FROM users WHERE email='%u';
4. Установите необходимые права группе dovecot
# chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
# chmod o= /etc/dovecot/dovecot-sql.conf.ext
5. Перезапустите dovecot
# systemctl restart dovecot
6. Проверьте журнал почтового сервера /var/log/maillog
# tail /var/log/maillog
Пример
Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system
Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix
Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)
Протестируйте почтовый сервер EAI
1. Протестируйте pop3
# telnet localhost pop3
Пример
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Dovecot ready.
2. Протестируйте SMTP
# telnet localhost 25
# ehlo localhost
Пример
250-mail.test.ru
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
3. Протестируйте отправку и получение почты при помощи mailx
Проверьте журнал /var/log/maillog Примерный результат:
# yum -y install mailx
# mailx thai@test.ru (input subject then press enter follow by content and use Ctrl+D for sending out)
# tail /var/log/maillog
Пример
Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root>
Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru>
Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active)
Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed
Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/
# cd /etc/postfix/dynamicmaps.cf.d/
# vi mysql.cf
mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open
4. Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат:
# tail /home/vmail/dovecot-deliver.log
2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru: saved mail to INBOX
5. Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат:
# cd /home/vmail/test.ru/thai/Maildir
# find
Пример
.
./dovecot-uidlist
./cur
./new
./new/1285609582.P6115Q0M368794.li172-137
./dovecot.index
./dovecot.index.log
./tmp
6. Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике
# yum -y install mutt
# mutt -f .
7. Проверьте отправку писем с интернационализированного адресов
- В конце отправляемого сообщения поставьте «.»
- Нажмите Ctrl+] , чтобы выйти
# telnet localhost 25
# EHLO localhost
# MAIL FROM: тест@тест.рф SMTPUTF8
# RCPT TO: тест1@тест1.рф
# data
# Subject: eai test
#
# .
Установите SquirrelMail
1. Установите squirrelmail
# yum -y install epel-release
# yum install squirrelmail
2. Если у вас не установлен Apache, установите Apache
# yum -y install httpd
# systemctl enable httpd
# systemctl start httpd
# systemctl status httpd
3. Скопируйте/перенесите squirrelmail в /var/www/html/
# cd /var/www/html/
(скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp)
4. Создайте каталог данных для squirrelmail
# cd /var/lib/squirrelmail/
# mkdir data
# chmod ugo+rwx data/
5. Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail
# Test sending and receiving mail